import request from '@/utils/request'
import { parseStrEmpty } from "@/utils/ruoyi";

/**
 * 查询用户列表
 * @param {Object} query - 查询参数对象
 * @returns {Promise} 返回用户列表数据的Promise对象
 */
export function listUser(query) {
  return request({
    url: '/system/user/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询用户详细信息
 * @param {string|number} userId - 用户ID
 * @returns {Promise} 返回用户详细信息的Promise对象
 */
export function getUser(userId) {
  return request({
    url: '/system/user/' + parseStrEmpty(userId),
    method: 'get'
  })
}

/**
 * 新增用户
 * @param {Object} data - 用户数据对象
 * @returns {Promise} 返回新增结果的Promise对象
 */
export function addUser(data) {
  return request({
    url: '/system/user',
    method: 'post',
    data: data
  })
}

/**
 * 修改用户信息
 * @param {Object} data - 更新后的用户数据对象
 * @returns {Promise} 返回修改结果的Promise对象
 */
export function updateUser(data) {
  return request({
    url: '/system/user',
    method: 'put',
    data: data
  })
}

/**
 * 删除用户
 * @param {string|number} userId - 要删除的用户ID
 * @returns {Promise} 返回删除结果的Promise对象
 */
export function delUser(userId) {
  return request({
    url: '/system/user/' + userId,
    method: 'delete'
  })
}

/**
 * 重置用户密码
 * @param {string|number} userId - 用户ID
 * @param {string} password - 新密码
 * @returns {Promise} 返回密码重置结果的Promise对象
 */
export function resetUserPwd(userId, password) {
  const data = {
    userId,
    password
  }
  return request({
    url: '/system/user/resetPwd',
    method: 'put',
    data: data
  })
}

/**
 * 修改用户状态
 * @param {string|number} userId - 用户ID
 * @param {string} status - 用户状态
 * @returns {Promise} 返回状态修改结果的Promise对象
 */
export function changeUserStatus(userId, status) {
  const data = {
    userId,
    status
  }
  return request({
    url: '/system/user/changeStatus',
    method: 'put',
    data: data
  })
}

/**
 * 查询用户个人信息
 * @returns {Promise} 返回当前用户个人信息的Promise对象
 */
export function getUserProfile() {
  return request({
    url: '/system/user/profile',
    method: 'get'
  })
}

/**
 * 修改用户个人信息
 * @param {Object} data - 更新后的用户个人信息对象
 * @returns {Promise} 返回个人信息修改结果的Promise对象
 */
export function updateUserProfile(data) {
  return request({
    url: '/system/user/profile',
    method: 'put',
    data: data
  })
}

/**
 * 用户密码重置（个人中心）
 * @param {string} oldPassword - 原密码
 * @param {string} newPassword - 新密码
 * @returns {Promise} 返回密码更新结果的Promise对象
 */
export function updateUserPwd(oldPassword, newPassword) {
  const data = {
    oldPassword,
    newPassword
  }
  return request({
    url: '/system/user/profile/updatePwd',
    method: 'put',
    data: data
  })
}

/**
 * 用户头像上传
 * @param {Object} data - 包含头像文件的数据对象
 * @returns {Promise} 返回头像上传结果的Promise对象
 */
export function uploadAvatar(data) {
  return request({
    url: '/system/user/profile/avatar',
    method: 'post',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: data
  })
}

/**
 * 查询用户授权角色
 * @param {string|number} userId - 用户ID
 * @returns {Promise} 返回用户角色授权信息的Promise对象
 */
export function getAuthRole(userId) {
  return request({
    url: '/system/user/authRole/' + userId,
    method: 'get'
  })
}

/**
 * 保存用户授权角色
 * @param {Object} data - 角色授权数据对象
 * @returns {Promise} 返回角色授权保存结果的Promise对象
 */
export function updateAuthRole(data) {
  return request({
    url: '/system/user/authRole',
    method: 'put',
    params: data
  })
}

/**
 * 查询部门下拉树结构
 * @returns {Promise} 返回部门树结构数据的Promise对象
 */
export function deptTreeSelect() {
  return request({
    url: '/system/user/deptTree',
    method: 'get'
  })
}
